/*
 * @Author: jqgao2
 * @Date: 2022-10-25 14:01:48
 * @LastEditTime: 2022-10-26 11:00:23
 * @Description: 全局初始化设置
 * @FilePath: \vue2-ele\src\utils\newTabShareSessionStorage.js
 * @LastEditors: jqgao2
 */

/* 多页面共享sessionStorage  */
export function listenStorage() {
  // 新打开一个tab标签页并通知其他标签页同步sessionStorage的数据到本标签页
  if (!sessionStorage.length) {
    // 这个调用能触发storage事件，从而达到共享数据的目的
    localStorage.setItem("syncSessionStorage", Date.now());
  }

  // 该事件是核心
  window.addEventListener("storage", function (event) {
    if (event.key === "syncSessionStorage") {
      // 已存在的标签页会收到这个事件
      localStorage.setItem("sessionStorage", JSON.stringify(sessionStorage));
      localStorage.removeItem("sessionStorage");
    } else if (event.key === "sessionStorage" && !sessionStorage.length) {
      // 新开启的标签页会收到这个事件
      let data = JSON.parse(event.newValue);
      for (let key in data) {
        sessionStorage.setItem(key, data[key]);
      }
    }
  });
}

export function cancelAutoFocus() {
  // https://blog.csdn.net/weixin_58494037/article/details/120115744 取消默认聚焦事件
  window.addEventListener("keydown", (e) => {
    if (e.path[0].nodeName === "BUTTON") {
      if (e.code === "Space" || e.code === "Enter") {
        e.preventDefault();
      }
    }
  });
}
